package com.kehutong.charge.service;

import com.kehutong.charge.dto.ChargeBillItemDTO;
import com.kehutong.charge.entity.ChargeBillHouse;
import com.kehutong.charge.service.impl.ChargeBillHouseServiceImpl;
import com.kehutong.common.util.Token;
import org.coraframework.inject.ImplementedBy;
import org.coraframework.json.JSONObject;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * @program: kht
 * @description: 常规账单服务接口
 * @author: joneron
 * @create: 2021/7/5
 **/
@ImplementedBy(ChargeBillHouseServiceImpl.class)
public interface ChargeBillHouseService extends BaseService<ChargeBillHouse>{

    /**
     * 收款账单数据查询
     * @param jsonObject
     * @return
     */
    Object findBillHouseList(JSONObject jsonObject);

    /**
     * 账单详情（根据住户号统计该用户所有月份的待缴费账单）
     * @param jsonObject
     * @return
     * jian Ye
     */
    Object houseAllUnpaidMonth(JSONObject jsonObject);

    /**
     * 账单详情（根据住户号和年月统计该用户当年账单列表）
     * @param jsonObject
     * @return
     * jian Ye
     */
    Object houseYear(JSONObject jsonObject);

    /**
     * 查询违约金
     * @param jsonObject
     * @return
     */
    List<ChargeBillItemDTO> findPenalty(JSONObject jsonObject);

    /**
     * 重新生成账单
     * @param jsonObject
     * @return
     */
    Object resetHouseBill(JSONObject jsonObject, Token token) throws Exception;

    /**
     * 房屋作废账单
     * @param jsonObject
     * @return
     */
    Object cancelHouseBill(JSONObject jsonObject, Token token);


    Object houseYearMonth(JSONObject jsonObject);

    /**
     * 查看对象信息
     */
    ChargeBillHouse getObj(JSONObject jsonObject);

    void pageHouseExport(HttpServletRequest req, HttpServletResponse resp, JSONObject jsonObject);
}
